﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.IO;
using System.Web.Mvc;
using System.Xml;
using Microsoft.Xml.XQuery;

namespace cancerportal.Controllers
{
    public class createDatabaseController : Controller
    {
        public void createCorpusDB()
        {
            string[] arrLines;
            string[] files = Directory.GetFiles("F:\\DATN - CancelPortal\\cancerportal\\vnPOS");
            string[] lexical;
            foreach (string f in files)
            {
                string[] arrTemp;
                arrLines = System.IO.File.ReadAllLines(f);
                foreach (string line in arrLines)
                {
                    lexical = line.Split(' ');
                    foreach (string lex in lexical)
                    {
                        string[] words;
                        arrTemp = lex.Split('/');
                        if (arrTemp[0].Equals("") || arrTemp[0].Equals(".") || arrTemp[0].Equals(",") || arrTemp[0].Equals("/") || arrTemp[0].Equals("\\") || arrTemp[0].Equals("\"") || arrTemp[0].Equals(")") || arrTemp[0].Equals("(") || arrTemp[0].Equals("$") || arrTemp[0].Equals("@") || arrTemp[0].Equals("*") || arrTemp[0].Equals("^") || arrTemp[0].Equals("%") || arrTemp[0].Equals("#") || arrTemp[0].Equals("&") || arrTemp[0].Equals("!") || arrTemp[0].Equals(";") || arrTemp[0].Equals("?") || arrTemp[0].Equals("-") || arrTemp[0].Equals("_") || arrTemp[0].Equals("=") || arrTemp[0].Equals("+") || arrTemp[0].Equals(":") || arrTemp[0].Equals("~") || arrTemp[0].Equals("`"))
                        {
                        }
                        else
                        {
                            if (arrTemp[0].Contains('_'))
                            {
                                words = arrTemp[0].Split('_');
                                for (int i = 1; i < words.Length; i++)
                                {
                                    words[0] = words[0] + " " + words[i];
                                }
                                Models.corpusModels.insertIntoDB(words[0]);
                            }
                            else
                            {
                                Models.corpusModels.insertIntoDB(arrTemp[0]);
                            }
                        }
                    }
                }
            }
        }

        public void createDictionaryDB()
        {
            string[] files = Directory.GetFiles("F:\\DATN - CancelPortal\\cancerportal\\Dictionary");
            foreach (string f in files)
            {
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(f);
                XmlNodeList xnList = xmlDoc.SelectNodes("/Dictionary/LexicalEntry");
                foreach (XmlNode xn in xnList)
                {
                    XmlNode header = xn.SelectSingleNode("HeadWord");
                    if (header != null)
                    {
                        Models.dictionaryModels.insertIntoDictionary(header.InnerText);
                    }
                }
            }
        }
    }
}